// let s1 = Symbol()  // Symbol是独一无二的
// let s2 = Symbol()
// console.log(s1,s2, s1===s2);


// let s1 = Symbol('foo')
// let s2 = Symbol('bar')
// console.log(s1);
// console.log(s2);

// const obj = {
//   name:'imooc',
//   toString(){
//     return this.name
//   }
// }
// let s = Symbol(obj)
// console.log(s);


// let s = Symbol('foo')
// console.log(s.description);

// let s1 = Symbol.for('foo')
// let s2 = Symbol.for('foo')
// console.log(s1 == s2, s1);

// function foo(){
//   return Symbol.for('foo')
// }
// const x = foo()
// const y = Symbol.for('foo')
// console.log(x == y);


// const s1 = Symbol('foo')
// console.log(Symbol.keyFor(s1));
// const s2 = Symbol.for('foo')
// console.log(Symbol.keyFor(s2));


// const stu1 = Symbol('李四')
// const stu2 = Symbol('李四')
// const grade = {
//   张三:{
//     address:'xxxx',tel:'111'
//   },
//   [stu1]: {
//     address: 'xxxx', tel: '222'
//   },
//   [stu2]: {
//     address: 'xxxx', tel: '333'
//   },
// }
// console.log(grade);

// const sym = Symbol('imooc')
// class User {
//   constructor(name){
//     this.name = name
//     this[sym] = 'imooc.com'
//   }
//   getName(){
//     return this.name + this[sym]
//   }
// }
// const user = new User('xiecheng')
// console.log(user.getName());

// for(let key in user){   // 通过for in遍历不到Symbol属性
//   console.log(key);
// }

// for(let key of Object.keys(user)){
//   console.log(key);
// }

// for(let key of Object.getOwnPropertySymbols(user)){
//   console.log(key);
// }

// for(let key of Reflect.ownKeys(user)){
//   console.log(key);
// }

// function getArea(shape){
//   let area = 0
//   switch(shape){
//     case 'Triangle':
//       area = 1
//       break
//     case 'Circle':
//       area = 2
//   }
//   return area
// }
// console.log(getArea('Triangle'));

const shapeType = {
  triangle:Symbol(),
  circle:Symbol()
}
function getArea(shape) {
  let area = 0
  switch (shape) {
    case shapeType.triangle:
      area = 1
      break
    case shapeType.circle:
      area = 2
  }
  return area
}
console.log(getArea(shapeType.triangle));
